Some computer-related processes (e.g., a device discovery process for a network, such as a telecommunication network) include several sequential phases, where each phase involves multiple tasks that are executed concurrently. If the tasks in one phase of a process are successfully executed, tasks in a subsequent phase of the process may be prepared for execution. Each phase of the process may include a different number of threads (e.g., a portion of a program that executes tasks) for executing the tasks of the phase. Tasks in different phases of the process may include different timeouts. It may useful for a user associated with the process (e.g., a network administrator, a computing device user, etc.) to know the progress of the process and/or how much more time remains before execution of the process is complete. However, estimating the time remaining for such processes is complicated because there are different phases, there are different thread pool sizes for different phases, different phases have different timeouts (e.g., specified periods of time that will be allowed to elapse in a system before specified events are to take place), and/or the phases may wait for a real time notification or response (e.g., from another process in the network).
Some processes that provide remaining time information include a computer operating system that presents a time remaining for copying files and/or folders from one location to another location, and a computer download manager that presents a time remaining for downloading files (e.g., from the Internet) to a local hard drive. Such processes utilize multiple threads. For example, such processes may split the file(s) being copied or downloaded into multiple chunks, and utilize multiple threads to copy or download the multiple chunks. However, there are no phases involved in such processes, and timeouts are not utilized in such processes (e.g., except for a generic transmission control protocol/Internet protocol (TCP/IP) timeout).